package kiosk;

/**
 * Importeringer
 */
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import static javax.swing.JOptionPane.*;

/**
 * Klasse: GUIKurv
 * @author  RK
 * @version 1.0
 * -------------------------
 * Sist endret: 6 April 2010
 */
public class GUIKurv extends JPanel {

    private Salg salget;
    private KurvTabellModel dtm;
    private ProduktListe prod;
    private JTable tbl;
    private JScrollPane jsp;
    private String[] col = { "Strekkode", "Produktnavn", "Antall", "Pris" };
    private double pris;

    public GUIKurv()
    {
        this.prod = new ProduktListe();
        this.initKomponenter();
    }

    public GUIKurv(ProduktListe produkter)
    {
        this.prod = produkter;
        this.initKomponenter();
    }

    private void initKomponenter()
    {
        this.setPreferredSize(new Dimension(760, 230));
        lagKurv();
        this.setVisible(true);
    }

    public void addProduktTilKurv(Produkt p)
    {
        if (prod.erAllerede(p.getStrekkode()))
        {
            Produkt a = prod.getProdukt(p.getStrekkode());
            a.økAntallIKurv();
            prod.endreProdukt(a);
        }
        else
        {
            prod.addProduktTilKurv(p);
        }
        this.pris += p.getDeltagerPris();
        this.oppdaterTabell(prod);
    }

    public void fjernProduktFraKurv()
    {
        if (tbl.getRowCount() != 0 && tbl.getSelectedRows().length != 0)
        {
            int rad = tbl.getSelectedRow();
            Object o = dtm.getValueAt(rad, 0);
            String strekkode = o.toString();
            Produkt p = prod.getProdukt(strekkode);
            this.pris -= p.getDeltagerPris();
            if (p.getAntallIKurv() > 1)
            {
                p.minkAntallIKurv();
                prod.endreProdukt(p);
            }
            else
            {
                prod.slettProdukt(strekkode);
            }
            this.oppdaterTabell(prod);
        }
    }

    public void tømKurv()
    {
        this.pris = 0;
        prod.tømArkiv();
        this.oppdaterTabell(prod);
    }

    private void oppdaterTabell(ProduktListe prod)
    {
        dtm = new KurvTabellModel(prod, col);
        tbl.setModel(dtm);
    }

    public int getNumRows()
    {
        return dtm.getRowCount();
    }

    

    private void lagKurv()
    {
        dtm = new KurvTabellModel(prod, col);
       // dtm.setColumnIdentifiers(new String[] );
        this.setLayout(new BorderLayout());
        tbl = new JTable();
        tbl.setFocusable(false);
        tbl.setModel(dtm);

        jsp = new JScrollPane(tbl);
        jsp.setFocusable(false);
        jsp.setPreferredSize(new Dimension(760, 200));
        this.add(jsp, BorderLayout.NORTH);


    }

    public void fullførSalg()
    {
        this.pris = 0;
        this.prod = new ProduktListe();
        this.tømKurv();        
    }

    public double getPris()
    {
        return this.pris;
    }

    public ProduktListe getKurv()
    {
        return this.prod;
    }

}
